﻿//===========================[ 8 / 22 / 2011 LVI ]=============================
//				Copyright c Vitaly Lyaschenko <SkyChameleon@gmail.com>
//								Source file
// Purpose: 
//=============================================================================
#include "cSkyBox.h"
#include "Kernel.h"

SkyBox::SkyBox()
{
	m_pRender = Kernel::spec().getRender();
}

SkyBox::~SkyBox()
{

}

void SkyBox::init( cEffect *pEffect, bool buildFlag /*= false */ )
{

}

void SkyBox::release()
{

}

void SkyBox::draw()
{

}

void SkyBox::build()
{
	// если ранее модель не "собиралась"
	if ( !m_buildFlag )
	{
 
		int sizeofVert = sizeof(Vertex_PNT) * m_Model->meshes[0]->getNumVertices();
		int sizeofIndx = sizeof(_16ubit) * m_Model->meshes[0]->getNumIndices();
		void *dataVert = m_Model->meshes[0]->m_Vertices.data();
		void *dataIndx = m_Model->meshes[0]->m_Indices.data();

		// создание и биндинг 1 VAO для части модели
		m_VAO = m_pRender->createVArray();
		m_VAO->Create();

		// создаем VBO(Vertex Buffer Object) для позиции вершин
		m_VBO_Pos = m_pRender->createVBuffer( sizeofVert, dataVert );
		m_pRender->setAttrPtr( VERT_POSITION, 3, sizeof(Vertex_PNT), (void *)0 );

		// создаем VBO(Vertex Buffer Object) для нормалей
		m_VBO_Normal = m_pRender->createVBuffer( sizeofVert, dataVert );
		m_pRender->setAttrPtr( VERT_NORMAL, 3, sizeof(Vertex_PNT), (void *)(sizeof(float) * 3) );

		// создаем VBO(Vertex Buffer Object) для текстурных координат
		m_VBO_TexCoor = m_pRender->createVBuffer( sizeofVert, dataVert );
		m_pRender->setAttrPtr( VERT_TEXCOORD, 2, sizeof(Vertex_PNT), (void *)(sizeof(float) * 6) );

		// создаем VBO(Vertex Buffer Object) для индексов
		m_VBO_Indices = m_pRender->createVBufferEl( sizeofIndx, dataIndx );

		m_VAO->Unbind();
	}
	m_buildFlag = true;
}
